package com.example.designpattern.behavioral.state.oop;

import com.example.designpattern.behavioral.state.ISwitchState;
import com.example.designpattern.behavioral.state.IUser;


public class User implements IUser, ISwitchState {

    IUser state;

    /**
     * 默认是普通用户状态
     */
    public User() {
        state = new Normal();
    }

    /**
     * 可以看到，丑陋的状态判断语句消失了，无论 IUser 接口中有多少方法，User 类都只需要调用状态类的对应方法即可。
     */
    @Override
    public void mockInterview() {
        state.mockInterview();
    }

    @Override
    public void purchasePlus() {
        state = new Plus();
    }

    @Override
    public void expire() {
        state = new Normal();
    }
}
